题解:P15930 [TOPC 2021] Aliquot Sum

236 字
1 分钟
题解:P15930 [TOPC 2021] Aliquot Sum

题面传送门:P15930 [TOPC 2021] Aliquot Sum

题目大意#

给出一个数,判断这个数的不包括本身的因数和与这个数的大小关系。

思路讲解#

注意到本题特殊时间限制为 88 秒,可直接枚举出读入数的所有因数之和再判断。下面给出求 s(n)s(n) 思路。

枚举 1∼n1 \sim \sqrt{n},可得出 nn 因数中较小一半,可通过计算得出另一半的因数。要将当前数与 nn 与此数之商都加入到 s(n)s(n) 中。
特别地,当前枚举的数的平方等于 nn 时,s(n)s(n) 只需加入当前数。

特别注意,n=1n=1 时, s(n)s(n) 值为零。

代码实现#

本代码在暴力方法的基础上尽可能优化。
提交记录点此直达。

完整代码
#include<cstdio>
using namespace std;
int t,n,s;
int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&n);
s=0;
for(int i=1;i*i<=n;i++){
if(n==1) break;
if(n%i==0){
if(i*i!=n&&i!=1) s+=i+n/i;
else s+=i;
}
}
if(s>n) printf("abundant\n");
else if(s<n) printf("deficient\n");
else printf("perfect\n");
}
return 0;
}

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

题解:P15930 [TOPC 2021] Aliquot Sum
https://zhedaotixuanbo.pages.dev/posts/题解:P15930 [TOPC 2021] Aliquot Sum/
作者
zhedaotixuanbo
发布于
2026-03-28
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
zhedaotixuanbo
这道题选什么? _____!
公告
分类
标签
站点统计
文章
17
分类
1
标签
21
总字数
6,295
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
ZTXB v1.0.0
文章许可
CC BY-NC-SA 4.0